const mongoose = require('mongoose');

// 定义Category的Schema
const CategorySchema = new mongoose.Schema({
    name: {
        type: String,
        required: [true, '名称必须填写。'],
        trim: true,
        minlength: [2, '长度必须是2 ~ 45之间。'],
        maxlength: [45, '长度必须是2 ~ 45之间。'],
        unique: true,
        validate: {
            // 自定义验证函数，检查名称是否已存在，此处是异步验证示例，也可根据实际情况使用同步验证逻辑
            async validator(value) {
                const category = await mongoose.models.Category.findOne({ name: value });
                return!category;
            },
            message: '名称已存在，请选择其他名称。'
        }
    },
    rank: {
        type: Number,
        required: [true, '排序必须填写。'],
        ref: 'Book',
        min: [1, '排序必须是正整数。'],
        validate: {
            validator: Number.isInteger,
            message: '排序必须为整数。'
        }
    }
});

// 定义虚拟属性等其他相关逻辑（如果有需要可在此处添加）

// 创建Category模型
const Category = mongoose.model('Categories', CategorySchema);

module.exports = Category;